package persistencia;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import modelo.CategoriaProduto;

public class CategoriaProdutoDAO extends Conexao {

    public CategoriaProdutoDAO() throws SQLException {
        super();
    }

    public void inserir(CategoriaProduto categoriaProduto) throws SQLException {
        this.setPreparedStatement("insert into gastro_categoriaproduto(id, nome) " + "values (nextval('gastro_categoriaproduto_id_seq'), ?)");
        this.getPreparedStatement().setString(1, categoriaProduto.getNome());
        this.getPreparedStatement().executeUpdate();
    }

    public void alterar(CategoriaProduto categoriaProduto) throws SQLException {
        this.setPreparedStatement("update gastro_categoriaproduto set nome = ? where id = ?");
        this.getPreparedStatement().setString(1, categoriaProduto.getNome());
        this.getPreparedStatement().setInt(2, categoriaProduto.getId());

        this.getPreparedStatement().executeUpdate();
    }

    public void excluir(CategoriaProduto categoriaProduto) throws SQLException {
        this.setPreparedStatement("delete from gastro_categoriaproduto where id = ?");
        this.getPreparedStatement().setInt(1, categoriaProduto.getId());
        this.getPreparedStatement().executeUpdate();
    }

    public CategoriaProduto getCategoriaProdutoPorID(int id) throws SQLException {
        CategoriaProduto categoriaProduto = new CategoriaProduto();
        this.setPreparedStatement("select * from gastro_categoriaproduto where id = ?");
        this.getPreparedStatement().setInt(1, id);
        this.setResultSet(getPreparedStatement().executeQuery());
        while (this.getResultSet().next()) {
            categoriaProduto.setId(getResultSet().getInt("id"));
            categoriaProduto.setNome(getResultSet().getString("nome"));

        }
        return categoriaProduto;
    }

    public CategoriaProduto getCategoriaProdutoPorNome(String nome) throws SQLException {
        CategoriaProduto categoriaProduto = new CategoriaProduto();
        this.setPreparedStatement("select * from gastro_categoriaproduto where nome = ?");
        this.getPreparedStatement().setString(1, nome);
        this.setResultSet(getPreparedStatement().executeQuery());
        while (this.getResultSet().next()) {
            categoriaProduto.setId(getResultSet().getInt("id"));
            categoriaProduto.setNome(getResultSet().getString("nome"));

        }
        return categoriaProduto;
    }

    public List<CategoriaProduto> getCategoriasProduto(String sql) throws SQLException {
        List<CategoriaProduto> categoriasProduto = new ArrayList<>();
        this.setPreparedStatement(sql);
        this.setResultSet(this.getPreparedStatement().executeQuery());
        while (this.getResultSet().next()) {
            CategoriaProduto categoriaProduto = new CategoriaProduto();
            categoriaProduto.setId(this.getResultSet().getInt("id"));
            categoriaProduto.setNome(this.getResultSet().getString("nome"));
            categoriasProduto.add(categoriaProduto);
        }
        return categoriasProduto;
    }
}
